package 动态规划.贪心算法;

import java.util.Arrays;
import java.util.PriorityQueue;

public class 课程表3 {
    public int scheduleCourse(int[][] courses) {
        //截止日期升序
        Arrays.sort(courses, (a, b)->a[1]-b[1]);
       //优先队列  降序
        PriorityQueue<Integer> q = new PriorityQueue<>((a, b)->b-a);
        //学习课程需要的天数
        int sum = 0;
        for (int[] c : courses) {
            int d = c[0], e = c[1];
            sum += d;
            q.add(d);
            //学习天数大于截止日期，将学习时间最长的课程移除
            if (sum > e)
                sum -= q.poll();
        }
        return q.size();
    }
}
